home *** CD-ROM | disk | FTP | other *** search
/ Aminet 16 / Aminet 16 (1996)(GTI - Schatztruhe)[!][Dec 1996].iso / Aminet / util / boot / MemPatch.lha / mempatch.e < prev   
Text File  |  1992-09-03  |  2KB  |  80 lines

  1. OBJECT memi
  2.   task, size, type, ret
  3. ENDOBJECT
  4.  
  5. MODULE 'exec/nodes','exec/memory'
  6.  
  7. DEF list[256]:ARRAY OF memi, oldptr, task, size, type, ret, missed
  8.  
  9. CONST MIN=128 -> allocs < 128 bytes are not written (efficiency!)
  10.  
  11. PROC main()
  12.   DEF mem:PTR TO memi,cnt
  13.   LEA globvec(PC),A3; MOVE.L A4,(A3) -> this is the global variables ptr
  14.   SetTaskPri(FindTask(NIL),-40)
  15.   WriteF('MemPatch v1.0 by Kyzer/CSG. Press CTRL-C to end.\n\s\n\s\n',
  16.   'Taskname                      | Size wanted     | Flags   | Result',
  17.   '------------------------------|-----------------|---------|----------')
  18.   FOR cnt:=0 TO 255 DO list[cnt].task:=0
  19.   oldptr:=SetFunction(execbase,-198,{patch})
  20.   WHILE CtrlC()=0
  21.     Delay(1)
  22.     IF missed
  23.        WriteF('Missed \d allocations\n',missed)
  24.        missed:=0
  25.     ENDIF
  26.     FOR cnt:=0 TO 255
  27.       mem:=list[cnt]
  28.       IF mem.task
  29.         WriteF('\l\s[30]| \d[16]| \s\s\s\s\s\s\s | $\h\n',
  30.         (IF mem.task::ln.name THEN mem.task::ln.name ELSE 'no valid name'),
  31.         mem.size,
  32.         (IF mem.type AND MEMF_PUBLIC   THEN 'P' ELSE '-'),
  33.         (IF mem.type AND MEMF_CHIP     THEN 'C' ELSE '-'),
  34.         (IF mem.type AND MEMF_FAST     THEN 'F' ELSE '-'),
  35.         (IF mem.type AND MEMF_LOCAL    THEN 'L' ELSE '-'),
  36.         (IF mem.type AND MEMF_24BITDMA THEN 'D' ELSE '-'),
  37.         (IF mem.type AND MEMF_CLEAR    THEN 'X' ELSE '-'),
  38.         (IF mem.type AND MEMF_REVERSE  THEN 'R' ELSE '-'),
  39.         mem.ret)
  40.         mem.task:=0
  41.       ENDIF
  42.     ENDFOR
  43.   ENDWHILE
  44.   WriteF('Finished.\n')
  45.   SetFunction(execbase,-198,oldptr)
  46. ENDPROC
  47.  
  48. patch:
  49.   MOVEM.L D1-D7/A0-A6,-(A7)
  50.   LEA     globvec(PC),A3
  51.   MOVE.L  (A3),A4
  52.  
  53.   MOVE.L  276(A6),task
  54.   MOVE.L  D0,size
  55.   MOVE.L  D1,type
  56.   MOVE.L  oldptr,A3
  57.   JSR     (A3)
  58.   MOVE.L  D0,ret
  59.   CMP.L   #MIN,size
  60.   BLS.S   noput
  61.   MOVE.L  list,A3
  62.   MOVE.L  #255,D1
  63. loop:
  64.   TST.L   (A3)
  65.   BEQ.S   put
  66.   ADD.L   #SIZEOF memi,A3
  67.   DBRA    D1,loop
  68.   ADD.L   #1,missed
  69.   BRA.S   noput
  70. put:
  71.   MOVE.L  task,(A3)+
  72.   MOVE.L  size,(A3)+
  73.   MOVE.L  type,(A3)+
  74.   MOVE.L  ret, (A3)
  75. noput:
  76.   MOVE.L  ret,D0
  77.   MOVEM.L (A7)+,D1-D7/A0-A6
  78.   RTS
  79. globvec: LONG 0
  80.